dbt Cloud上でSQLFluffを使ってリンティングとフォーマッティングしてみた

dbt Cloud上でSQLFluffを使ってリンティングとフォーマッティングしてみた

Clock Icon2024.08.14

さがらです。

dbt CloudのIDE上でSQLFluffを使ってリンティングとフォーマッティングが出来る機能を試してみたので、本記事でまとめてみます。

https://docs.getdbt.com/docs/cloud/dbt-cloud-ide/lint-format

SQLFluffの有効化

まず、dbt CloudのIDE上でSQLFluffを有効化する必要があります。

dbt CloudのIDEではデフォルトで「sqlfmt」を用いたフォーマッティングができるようになっているのですが、SQLFluffを使う場合には設定を切り変える必要があります。

具体的には、IDEの右下でCode qualityタブ→Configを押してから、SQLFluffを選択してSaveを押せばOKです。

2024-08-13_15h31_36

2024-08-13_15h32_31

SQLFluffを使ってみる

ということで、実際にSQLFluffをdbt Cloud上で使ってみます。

まずはSQLFluffのデフォルトの設定で試してみます。

下図のようにSQLを書いた状態で、IDEの右下のLintを押してみます。

2024-08-13_15h35_37

すると、IDEの右下にリンティングを行った結果が表示され、IDE上にも波線と合わせて何がルールに沿っていないかが表示されます。

2024-08-13_15h37_51

また、IDE上で波線をクリックして表示されるアイコンを更にクリックし、Fix ass issuesを押すと、リンティングでの指摘事項を自動で修正(フォーマッティング)してくれます。

2024-08-13_15h41_44

2024-08-13_15h42_23

ちなみに、リンティングをせずにいきなりフォーマッティングさせることも可能です。

IDEの右下からLintの横の下向き矢印を押して、Fixを押すことで、フォーマッティングすることが出来ます。(一度Fixを押すとLintではなくFixが常時IDE上に表示されるようになります。Lintを押すとまたLintが常時IDE上に表示されるようになります。)

2024-08-13_15h44_23

2024-08-13_15h44_43

設定値をカスタムしてみた

次に、SQLFluffはユーザー側で設定をカスタムすることが出来るため、実際にやってみます。

dbt Cloud上で行うこととしては、dbt projectのルート階層で.sqlfluffというファイルを作成し、任意の設定値を定義すればOKです。カスタマイズの参考としては、こちらの公式Docでdbt Labs社から推奨されている設定などが参考になると思います。

2024-08-14_07h06_18

一つ例としてわかりやすいように、tab_space_size = 16に設定したうえで、LintFixを押してみます。(一般的にはtab_space_size = 4などを設定することが多いです、実際に適用する際はご注意ください。

2024-08-14_07h08_47

まずLintを押すと、下図のようにExpected indent of 16 spaces.というエラーが出てきました。

2024-08-14_07h09_55

Fixを押すと、下図のようにインデントを表すスペースが半角スペース16個分に修正されました。このように、.sqlfluffファイルを作成することで設定をカスタムできることがわかったと思います。

2024-08-14_07h12_48

最後に

簡単ではありますが、dbt CloudのIDE上でSQLFluffを使ってリンティングとフォーマッティングが出来る機能を試してみました。

独自のSQLのコーディング規則を設けたい場合には便利な機能だと思いますので、ぜひ活用してみてください!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.